package vip.xiaomaoxiaoke.functiondemo.msg.message;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 本地基础消息，是一个本地消息表需要的最基本的几个字段，框架内部会操作的字段为此类型的字段
 * 根据需要，未来可继承该基本消息后，通过添加其他属性，生成新的消息
 */
@Data
@AllArgsConstructor
@Accessors(chain = true)
@NoArgsConstructor
public abstract class Message<T> implements MessageSerialize<T> {

    /**
     * 消息id
     * */
    private String msgId;

    /**
     * 是否有序
     * */
    private boolean orderly;

    /**
     * 分区标识符，如果orderly为true 则相同的shardingKey会严格按照顺序去执行
     * 不管orderly怎么样，只要不为空，发送rocketmq实会设置为消息key,发送kafka时会作为分区key
     * */
    private String shardingKey;


    /**
     * 时间间隔
     * */
    private int timeTnterval;


    /**
     * 最大重试次数
     * */
    private int maxRetries;



}
